import React from 'react';

/*
  学习目标：React性能优化
  性能优化原则：
    1. 功能第一
    2. 优化第二
  步骤：
     1. 减轻state的设计：
         非驱动界面更新的数据，不要方法在state中：比如定时器id Ref
     2. 🔔避免不必要的重新渲染: shouldComponentUpdate
*/

export default class App extends React.Component {
  state = {
    count: 0,
  };

  handleClick = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      <div>
        <h1>数量： {this.state.count}</h1>
        <button onClick={this.handleClick}>点我修改数量</button>
        <Footer></Footer>
      </div>
    );
  }
}

class Footer extends React.Component {
  // 本质：更新阶段的一个钩子函数，会在更新之前执行
  // 作用：自定义是否允许更新
  shouldComponentUpdate() {
    // 通过返回一个布尔值，来控制是否更新
    // 返回true表示更新
    console.log('更新前，我执行，我来决定是否更新  ----->  ');
    // 返回false表示不更新
    return false;
  }

  render() {
    console.log('render被执行了  ----->  ');
    return <div>我是Footer，我是写死的，我不想更新</div>;
  }
}
